Multiprogramming control for a data handling system

ABSTRACT

A data handling system including a plurality of groups of data originating and/or receiving devices operable asynchronously and independently with respect to each other, each group of such devices being coupled with an associated data transmission controller by means of a common data channel for buffering one unit (character) of data and providing certain basic data transmission controls for transmission of a character between an associated device and a common input/output data channel extending between the controllers and a supervisory control unit which is coupled with a main memory unit and a second data transmission channel. The second data transmission channel provides for transmission of characters between the supervisory control unit, the main memory unit and a data bank comprising a plurality of data storage or secondary data handling devices. The supervisory control unit provides the necessary elementary functional components to handle and control transmission of data between the data input/output devices and, the main memory and the data bank. The main memory unit is partitioned into a plurality of a section by means of adjustable hardware connected at each data transmission controller so as to permit only the data originating/receiving devices associated with it to communicate with an associated particular partitioned section of memory and an additional section of the memory is provided that is accessible to all partitions of the main memory unit. The supervisory control unit provides for a program stored in each particular section of the main memory unit to be executed for a predetermined period of time and then upon completion of successful branch operation in the program for a switch to performance of the program in the next section in a continuous round robbin for all sections manner. When a program instruction in one section of the main memory unit dictates performance of input/output operation a switch is made to another section but processing is suspended until the input/output operation is completed and then processing is commenced of the program instructions in the next section of the main memory unit. The supervisory control unit also includes functional components to perform certain basic arithmetic operations on the various data such as addition, subtraction, etc.

United States Patent Schaffer et al.

45] Oct. 17,1972

154] MULTIPROGRAMMING CONTROL FOR A DATA HANDLING SYSTEM [72] Inventors: Harry G. Schaffer, Danville; Dan A.

Neilson, Moraga; Eleuthere Poumakis, Danville, all of Calif.

[73] Assignee: The Singer Company, New York,

[22] Filed: April 27, 1970 2| Appl. No.: 32,243

[52] US. Cl. ..340/172.5

[51] Int. Cl ..G06f 9/18v [58] Field of Search ..340/l72.5; 235/157 [56] References Cited UNITED STATES PATENTS 3,377,619 4/1968 Marsh et al ....340/l72.5 3,297,994 1/1967 Klein ....340/l72.5 3,400,376 9/1968 McDonnel ....340/l72.5 3,296,596 1/1967 Yagusic et al. ..340/172.5 3,344,401 9/1967 MacDonald et a1. ...340/172.5 3,378,820 4/1968 Smith ..340/172.5 3,407,387 10/1968 Looschen et al. ..340/172.5

Primary Examiner-Paul J. Henon Assistant Examiner-Mark Edward Nusbaum Attorney-Charles R. Lepchinsky, Patrick J. Schlesinger, R. Perry Shipman and Jay M. Cantor [5 7} ABSTRACT A data handling system including a plurality of groups of data originating and/or receiving devices operable asynchronously and independently with respect to each other, each group of such devices being coupled with an associated data transmission controller by "W COJMUNlCAlIONQ ADA DT E 12 means of a common data channel for buffering one unit (character) of data and providing certain basic data transmission controls for transmission of a character between an associated device and a common input/output data channel extending between the controllers and a supervisory control unit which is coupled with a main memory unit and a second data transmission channel. The second data transmission channel provides for transmission of characters between the supervisory control unit, the main memory unit and a data bank comprising a plurality of data storage or secondary data handling devices. The supervisory control unit provides the necessary elementary functional components to handle and control transmission of data between the data input/output devices and, the main memory and the data bank. The main memory unit is partitioned into a plurality of a section by means of adjustable hardware connected at each data transmission controller so as to permit only the data originating/receiving devices associated with it to communicate with an associated particular parti tioned section of memory and an additional section of the memory is provided that is accessible to all partitions of the main memory unit. The supervisory control unit provides for a program stored in each particular section of the main memory unit to be executed for a predetermined period of time and then upon completion of successful branch operation in the program for a switch to performance of the program in the next section in a continuous round robbin for all sections manner. When a program instruction in one section of the main memory unit dictates performance of input/output operation a switch is made to another section but processing is suspended until the input/output operation is completed and then processing is commenced of the program instructions in the next section of the main memory unit. The supervisory control unit also includes functional components to perform certain basic arithmetic operations on the various data such as addition, subtraction, etc.

14 Claims, 16 Drawing Figures SUPRPVIQOW CONTROL UNlT MDIWEDAL owns; 9

ADnflTiD umt tumor 1 W4 9 {WM/OUTPUT m nus aus 12 w I PElZlDHU-YAL 1 Device 1 1/0 I amoel w 0 glgz g CONTROL 0 AMVTIZINT m) PATENTEU B 17 I973 3,699,532

SHEET mums ON LINE TELEPHONE COMMUNICATIGNS MODEM LlNE ADADTEI? 1 36 FILES ACCESQ DATA BUS 10 MNN MEMOQV TAD; 52

comm 2a 26 DISC f FILE 12 DISC 26 SUPEQVEOQV MCQNTQOL W CONTQOL 16 V FILE UN\T 26 DISC FILE PEE'WHEQAL DLWCE 9 1/0 m ADAPT-ED UN\T CON-20L M) I 22 19 \NPliT/OUTPUT DA A Bus 22 15 w pg xzmuwm I:

\nc; 1 ADADTED UNH' CONTQOL q 24 I 1 wvavrom p f uawm 1/0 mGDdn cggenggg I O Q GPPY cud 8P DQACE O C 0L EIeutuem @oumakvs ADAPTEQ UNlT 1b BY PATENTEDucI 17 1912 3.699.532 SHEET um 13 PADTFHON 2 LOWEQ 111111 (8111;: 1-1014E 11M1 EE 10 14) 11 111110110 15000 H T? H H IZEG.

P012T1T1ON1 812E 1-10! EXAMPLE 014) INDEX EEUQTEQS PIZOGQAM 11 14 21 24 a1 a4 41 44 111112121201 1 1 11000 r1 r1 11 F1 0 111121111011 0 (311121 1- 1011 EXAMPLE 714) INDEX 12EE1-s1E12e PQOGQAM 11012121201 1 1114 2124 0104 41 14 12% 05000 F] H l; F]

PI2\V\L ED ADEA 04000 (S1ZEIO-914,EYAMPLE 114) COMMON AQEA 00500 (6121;: 1-1011 00200 A wmzassm 1212c, A P12o1Ec1E 00100 B ADDDESSL$ DEG A P ADDQESQES 12121;

PATENTEU DDT 7 I972 SHEET 08 CF 13 I QC 0B0 E Nmu 5 Nu mm um om mm @m S ow $6 $5 m8 252: 03 :6 NS 3 04 O4 2 m4 m4 LLDIOE STEPS INTE PDUDT PATENIEUum 17 m2 SHEET 12BF13 INCIZEMENT ,u

STEPS PLACE B FDOM COPE INTO A DEC-B119, 84 TOJ 02cm A (coum) P/LAQT c/mmuum P2 EGET LAQT T0 IMTEIFQUPT swam; 2mm A 029w CODE. H0 84 INCQEMENTYM QTOQE E COUNTER QECALL FDOM CODE TEQMINATE TDANQFEQ -M WQH'E (A) I [ZEAD (A) LOAD I O S PIZESET F5 c/Du YE 0A0 12a PACE BDE PQEQET N1 \NCQEMENT A YES NO pm 1' (Auuuasa) l QTOQE A I CLEMZ \NTEQQUPT TO \NTEQQUPT Fl le PATENIED 001 I 7 I012 SHEET QELECTUJEVICE N 5 10! T0 FAG DE AD/ WDITE PIZESENT F2 DECQEMENT B DECALL Q4 DIQC DIZWL NOTO MCI PIZOCEQQOQ MJTO DIQC PQOC 0100mm DEC 0002055 (msumcsamo 00010010 0 [DEVICE M9 010$ TO I00 I F6+LBZ= "CONTBOL' 00000 100mm M1 STOQE 0&0

LOAD QEQ DIZE DECI'ZEMENT P1 POE SET BUQV BITS

TEIZM NATE TQANSFEQ DECIZEMENT B TO SWlTCl-l CLEN? LOAD [2E0 TO BgGlN MULTIPROGRAMMING CONTROL FOR A DATA HANDLING SYSTEM BAC KGROUND, FIELD OF INVENTION The present invention relates to an improvement in data processing systems and, more particularly but not by way of limitation, to an improved multiprogramming arrangement for a data processing system.

BACKGROUND, PRIOR ART An electronic data handling system is frequently utilized in a real time situation wherein a plurality of input/output devices, commonly called peripheral devices, operating asynchronously with respect to each other are called upon to transmit data between various ones of the peripheral devices and a main memory and to perform arithmetic operations at times, upon data being transmitted.

An example of a real time data handling systems involving a plurality of data handling devices is a large retail store system having a multiplicity of point of sale transaction devices or electronic cash registers interconnected with a central customer credit file, an electronic data processor, and a data bank in the form of a plurality of data files. In such a system, various ones of the ones of the cash registers are operated at random indeterminate times by human operators to enter various sales transaction data such as clerk number, credit card number, item prices, item quantity, discount factors, tax factor, item stock number, etc. In addition, the operator will operate various ones of function initiating keys on the cash register to cause certain operations to take place to effect a complete sales transaction such as add" to add the currently entered item price to a previously accumulated subtotal quantity, and to total the entire transaction so as to effect a termination of the particular transaction and at the same time effect a human readable printout of the transaction on paper tape.

Another example of a real time data handling system involving a plurality of data handling devices is an accounting or bookkeeping department of a business house, that may be the same retail store mentioned above, which regularly receives purchase orders and has a large accounts payable including but not limited to payrolls, raw materials, and components, and the like. In such a data handling system, the human operator will enter data into the complex by means of an alpha-numeric keyboard such as a typewriter which provides coded electrical output signals indicative of the various keys depressed, a numeric IO-key keyboard, and associated arithmetic function initiating keys, such as associated with a desk-type calculator and a perforated paper tape or edge punched card reader. The various items of data entered into the system are acted upon in various manners to printout by various printing devices, which may include a typewriter, a line printer, etc., a human readable document such as a billing document and the like, or an up-dated inventory record and to retain in a memory bank certain updated data. In order to properly act on the new-entered data, old data such as the former inventory record or customer's account status must be known and included in the action taken on the new data entered. Such old data may be conveniently and economically stored in centrally located devices such as magnetic disc files,

magnetic type files. large magnetic core memory devices, and other storage devices in which large amounts of data in machine readable form may be stored and retrieved.

Such central records must be available to a multiplicity of users of the aforementioned input devices. However, it is clear that such input devices will be operating asynchronously with respect to each other and asynchronously with respect to the data storage devices.

A difficult problem exists in the data handling systems of the type described above in coordinating requests for transmission of data between the various devices inasmuch as the requests occur randomly which, of course, means that requests from two or more peripheral devices can occur simultaneously or nearly so.

In order to coordinate requests for the transmission of data between various groups of asynchronously operating input/output devices and a central processor and a main memory bank it has been known to provide an executive program which coordinates the performance of each program, that controls the operation of an associated group of input/output devices, with the other required programs. In such a multiprogramming system the executive program becomes quite complicated and occupies not an insignificant amount of storage space. Where there are groups of input/output devices interconnected in a data handling system it has been known to require the dedication of the storage afforded by two magnetic disc storage devices for the executive program alone.

There is, therefore, a need for an apparatus and system to coordinate the operation of a plurality of programs which control the transmission of asynchronously occurring data between various ones of a plurality of data originating and receiving devices and a central processor and memory in an orderly manner with a minimum of delay or queuing of the requests and with a minimum of apparatus parts.

SUMMARY The advantages of the present invention are achieved by providing a main memory device divided into a plurality of sections or partitions, individual ones of which are associated with individual input/output device controllers and a section common to all the controllers. The individual partitions contain programs and data storage locations associated exclusively with an individual input/output device controller.

A supervisory control unit containing various data handling registers and control gates provide for executing the programs in the various partitions as required in a predetermined manner.

Furthermore, the control elements of the supervisory control unit include controls responsive to a request for service by the individual input/output controllers for interrupting the execution of a program being executed and servicing the input/output controller requesting service. Further, the supervisory control unit includes control gates and logic whereby execution of the program associated with an individual input/output controller is interrupted automatically after a certain predetermined time period has expired and execution of the program associated with the next sequential input/output controller is commenced so that execution of the programs is conducted on a sequential timeshared round robin basis.

It is therefore an object of the present invention to provide an improved multiprogramming system for handling data and programs associated with a plurality of groups of asynchronously operating peripheral devices.

The present invention may best be understood when the below description is read in connection with the drawings.

BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 is a simplified block diagram showing a data handling system utilizing the present invention.

FIG. 2 is a simplified block diagram showing the data conversion scheme utilized in the present invention.

FIG. 3 is an illustration showing typical data characters and a data word as stored in the main memory of the present invention.

FIG. 4 is a simplified illustration of the main memory showing the partitioning of the main memory.

FIG. 5 is an enlarged portion of FIG. 4.

FIG. 6 is an enlarged portion of FIG. 4.

FIG. 7 is an enlarged portion of FIG. 4.

FIG. 8 is an illustration of an instruction word of the present invention.

FIG. 9 is a chart showing the combined placement of FIGS. 10 and 11.

FIG. 10 is a simplified block diagram showing a portion of the supervisory control unit of the present invention.

FIG. 11 is a simplified block diagram showing the remaining portion of the supervisory control unit of the present invention.

FIG. 12 is a chart showing the combined placement of FIGS. l3, l4, l5, and 16.

FIG. 13 is a flow chart showing the operation of the supervisory control unit in implementing the Switch function according to the present invention.

FIG. 14 is a flow chart showing the operation of the supervisory control unit in implementing the Begin function according to the present invention.

FIG. 15 is a flow chart showing the operation of the supervisory control unit in implementing the Interrupt function according to the present invention.

FIG. 16 is a flow chart showing the operation of the supervisory control unit in implementing the Read/W rite function.

DESCRIPTION OF AN EMBODIMENT In FIG. I, there is shown in block diagram form a data handling system incorporating the present invention. A main memory 10 provides for storage and retrieval of data and operating programs utilized in the system of the present invention, data received from and to be transmitted to other operating units, and data comprising special information to be acted on by a supervisory control unit 12. The supervisory control unit 12 contains various gates, registers, and control elements to provide an orderly storage of data into and retrieval from the main memory to act on such instructions to operate upon various items of data such as addition and subtraction, to control and effect transmission and receipt of data over input/output data bus 14 and files access data bus 16.

Up to twenty input/output controllers 18 may be coupled with the input/output data bus 14. Each input/output controller is associated with a user group of up to 10 peripheral devices 20 and is coupled with its user group of peripheral devices by means of a twowire data line 22. Each input/output controller 18 provides buffer storage of a seven-binary bit character. As will be explained in more detail below, each user group of peripheral devices 20 and its associated input controller 18 is treated by the supervisory control unit as independent of the other user groups.

Each peripheral device 20 may be, for example, a point of sale transaction device that can transmit data to its associated input/output controller 18 in response to manual actuation of various ones of numeral keys, function keys, or card reading devices. One preferred point of sale transaction device is shown and described in copending US Pat. application, Ser. No. 855,904, filed Sept. 8, I969 by E. L. Asbo et al. for Data Transaction System" and assigned to the same assignee as the present application.

As shown in FIG. 1, each peripheral device 20 includes an adapter unit 24 which provides data in serial form to the data line from the associated peripheral device. Such adapter units are shown only for the purpose of explaining and emphasizing that in the preferred embodiment of the present invention data is handled in binary-serial form rather than binary-parallel form. It may be and oftentimes is the case that a peripheral device inherently provides data in binary serial form; in such an event, an adapter unit 24 would not be needed.

A disc controller 26 provides a communications link between the files access data bus 16 and a group of up to ID magnetic disc storage files 28, which may be of any type well known in the art to which the present invention pertains for storage and retrieval of data. The disc controller 26 provides the necessary controls to access data already stored or recorded in the disc files and for recording new data received over the files access data bus 16 on selected ones of the disc files 28. In the preferred embodiment of the present invention, the disc files 28 contain credit information concerning credit customers. When a customer presents a credit card, the operator of the peripheral device enters the customers account number by manual operation of numeral entry keys or by an automatic credit card reader. The account number is utilized by the supervisory control unit 12 to cause access to that one of the disc files 28 containing the particular customer's credit account information and such information usually in the form of a satisfactory," not-satisfactory" or no-information, refer to manager signal is transmitted back to the originating peripheral device, for appropriate action by the clerk who is operating the point of sale transaction peripheral device.

Likewise, in a similar manner, a tape controller 30 provides a communications link between the files access data bus 16 and a group of up to four magnetic tape storage files 32 which may be of any well known type. The tape controller 30 provides the necessary controls to access data already stored or recorded on the tape files and for recording new data received over the files access data bus onto selected ones of the tape storage files 32. In the preferred embodiment of the present invention, the tape files 32 are used to store or accumulate transaction data originating at the peripheral devices 20. Such accumulated data may then be retrieved and utilized by an electronic data processor. Such use may be implemented by physically data character transmitted from the input/output controller 18 to the supervisory control unit 12 is demonstrated in FIG. 2 by the seven binary signal lines designated bl, b2, b3, b4, b5, b6, and b7 contained connecting a separate electronic data processor (not 5 within input/output data bus 14 and having direction shown) to the tape controller 30, or by physically arrows pointing into the supervisory control unit 12. A removing the reels of tape from the tape files 32 and data character transmitted from the supervisory conplacing them on other tape file units associated with the trol unit 12 to an input/output controller 18 is demonseparate electronic data processor. strated in H6. 2 by the seven binary signal lines Also, the data accumulated on the tape files may be m designated bl, b2, b3, b4, b5, b6, and b7 contained transferred to a central electronic data processor 34 within input/output data bus 14 and having direction shown in FIG. 1. Communications between the elecarrows pointing into the input/output controller 18. tronic data processor 34 and the files access data bus However, the supervisory control unit 12 and, of 16 is provided by an on-line communications adapter course, the main memory uses only a six-bit binary 36, a modem 38 which couples with a telephone line 40 code. As shown in FIG. 2, the sixth level signal line b6 in a well-known manner. from the input/output controller in input data bus 14 is The supervisory control unit 12 may access the elecsimply terminated at the supervisory control unit. All tronic data processor 34 to cause direct on-line operadata within the supervisory control unit and the main tions on data as desired. memory that is received from an input/output controller 18 comprises the first five binary order signals DATA REPRESENTATION (bl, b2, b3, b4, and b5) plus the seventh binary order ln the preferred embodiment of the present invensignal Of the flssodaled USACH Code- Refefemfe tion a unit of data is termed a character. Within the su- Table l demonstrates f codes for f Symbols pervisory control unit 12 and main memory 10 of FIG. -"W E 7 are, with"! the l l, a single character is comprised of six binary bits. 11ml, mdlstlngulshable from the codes for Y I11 Each binary bit is represented by a voltage or current Columns 4 and r fespectlvelyr Since the slxlh level in a circuit or a direction of magnetization in a has been deletedmagnetic core storage device as is well known in the art In order to p P reference 1 and hence not further discussed in this application. codes throughout the remainder of thls pe fi n. However, the peripheral devices 20 in the preferred all data codes in the supervisory control unit, the main embodiments of the present invention utilize the 'y and ofher P g l t and f l r 0f the USACll code which is a seven bit binary code as shown p mvemlon be memlol'led as codes i T bl comprised of binary orders b1, b2, b3, b4, b5, and b7 TABLE L-USACII CODE CHART Bits:

b7 0 0 0 0 1 9 1 1 b6- 0 0 1 1 0 0 1 1 b 0 1 0 1 0 1 0 1 Hits Column b4 b3 b2 bl Row 0 1 2 3 4 5 6 7 0000 ONULDLESP 0 P p 00011SOHD01! 1 A Q a q 0010 zs'rxnoz" 2 B R b r 0 0 1 1 s EIX DC3 a o s c s 0 1 0 0 4 EO'I D04 s 4 D T 1 t 0 1 0 1 s ENQ NAK s E U o u 0 1 1 0 0 ACK SYN a a F v r v 0 1 1 1 r BEL E'IB 1 o w w 1 o o 0 a BS CAN s H x g x 1 o 0 1 9 HT EM 0 I Y 1 y IOIOIOLFBUB' J 2 1 101111VTESC+; Kg 1 1 1 0 0 12 FF Fs L 1 i 1 1 0 1 13 CR as M 1 m 1 1 1 0 14 so RS N A 11 11111581 US/ i o o DEL Reference to Table I shows a set of function control (b6 isnot used unless otherwise noted) of the standard acronyms in columns 0 and l and a set of normal data S Code Chart, as Shown in Table symbols in columns 2, 3, 4, 5, 6, and 7. Each of the When non-function command data is transmitted function control acronyms and normal data symbols from the supervisory control unit 12 to an input/output may be represented by a unique seven-bit binary code controller 18, the system is said to be operating in the as shown by the appropriate binary 0 or l(b1, b2, Normal" modewhen opefaling in the b3, b4, b5, b6, nd b7) a iat d i h h bi mode, the seventh order bit (117) in the set of six bits order of the binary code for the acronyms and symbols. comprising a character of data within the supervisory Reference is now made to FIG, 2 wherein there is control unit is logically inverted by inverter 42 (FIG. 2) shown one peripheral device 20 and its associated and transmitted from the inverter as the sixth order bit adapter unit 24. As previously mentioned the data line Of a true seven bit USAC" code fi p 22 is indicative of a two wire cable which connects the adapter unit 24 to its associated input/output controller 18. The input/output controller 18 receives and transmits serially data in the form of seven-bit characters. A

data bus 14 to the input/output controller 18. Additionally, when the system is operating in the normal mode, the seventh bit (b7) of the data character within the supervisory control unit 12 is transmitted through a gating switch 44 and over the input/output data bus 14 as the seventh order bit (b7) of a seven bit USACII code to the input/output controller 18.

Thus, as shown in Table l, six-bit codes within the supervisory control unit representative of the symbols in columns 2, 3, 4, and 5 will be transmitted to the input/output controller 18 as seven-bit codes representative of the symbols in the same respective columns.

When the system is to transmit command or function codes, the internal logic places the system in the Write Control Functions" mode of operation. In the Write- Control Functions mode of operation, the switch 44 in the supervisory control unit 12 (FIG. 2) is caused to disable transmission of the seventh order bit (b7) of data from the supervisory control unit over the input/output controller data bus 14. This is shown by the Function Control position of gating switch 44 in FIG. 2. With switch 44 in the Function Control position, the seventh order bit (b7) that is received or detected by the input/output controller 18 is always a binary Thus, the codes received by the input/output controller will be indicative of the functions or operations listed in columns 0 and l ofTable I.

DATA FORM AT A data character in the present invention is comprised of six binary bits and as mentioned previously, the bit orders are designated according to character codes in the USACAII code chart with the sixth order or bit of the USACAII dropped or missing. A single data character is contained in, i.e., stored in, and retrieved from, a single storage location or address in main memory 10.

A data word is one or more data characters in contiguous or successive locations in the main memory 10 and the contiguous data characters are treated as a unit or word by some program instruction. Generally, each data character is representative of a decimal digit. The first four binary orders (bl, b2, b3, and b4) are the BCD code for the represented decimal digit, the fifth order binary bit (b5) is always a 1" bit and the sixth order bit (b7) in the least significant decimal digit or character code is a binary 0" when the word (number) is positive and is a binary l when the word (number) is negative.

As shown in FIG. 3, the decimal number l769 is a four character word, successive decimal digits or characters of which are stored, for example, in successive main memory locations 2301, 2302, 2303, and 2304 and the least significant decimal digit or characters sixth binary bit (b7) contains a l bit to signify that the number has a negative value.

A Field" is one or more contiguous or successive locations in the main memory reserved for a specific category of data. A "Field" can contain one or more words.

MAIN MEMORY The main memory 10 of FIG, 1 is shown in more detail in FIG. 4. The main memory 10, in the preferred embodiment of the present invention, is a ferrite core type of addressable memory well known in the art and not further described herein as to its physical structure. Reference is made to Section 12 of the Computer Handbook" edited by H. D. Huskey and G. A. Korn,

published by the McGraw Hill Book Company in I962 for a more detailed description of magnetic core memory devices such as main memory 10. It is to be understood that while a main memory 10 having a certain number of data storage locations is illustrated the main memory 10 is constructed in a modular manner so that additional storage locations may be provided by increasing the size of the main memory 10 in a manner known in the art. Each addressable memory storage location will hold six binary bits comprising one data character. The particular size (number of memory storage locations) of the main memory 10 is a matter of choice within the limits (minimum and maximum) of other structural elements of the present invention as is described herein with respect to a preferred embodiment.

The address of each storage location is defined by a decimal number. However, it is not always necessary to use the high order decimal digits to define or specify a particular storage location due to the unique and improved addressing or memory accessing control logic elements which are part of the supervisory control unit 12, as will be described in more detail below.

As mentioned previously with reference to FIG. 1, each input/output controller 18 is considered to be associated with a different independent user of a unique set or group of peripheral devices 20. Obviously, only one peripheral device 20 may be associated with one input/output controller 18. Thus, the group of peripheral devices 20 associated with input/output controller No. l is a separate user group distinct from another user group of peripheral devices associated with, for example, input/output controller No. 0, No. 2, etc.

In the present invention, program instructions stored in the main memory 10 in cooperation with the logic control elements of the supervisory control unit 12 can be said to divide or partition the main memory into several sections or partitions, although it should be kept in mind that the various partitions of main memory need not be and are not in reality separate physical entities in the preferred embodiment, although they could be if so desired.

Each of the input/output controllers 18 of FIG. 1 has associated therewith a separate main memory partition. Main memory partition No. 0 shown in FIG. 4 is associated with only input/output controller No. 0 of FIG. 1; likewise, main memory partition No. l is associated with only input/output controller No. l of FIG. 1, etc.

Each main memory partition may be of up to 10,000 storage character locations in size; the individual partitions need not be all of the same size. For example, as shown in FIG. 4, partition No. 0 is 7,000 storage locations in size, while partition No. l is 3,000 storage locations in size, and partition No. 2 is l0,000 storage locations in size. The size of each partition (number of storage locations) is generally a fixed quantity but may be changed by appropriate adjustable connections in the individual input/output controllers partition beginning location logic and control elements. Thus, the particular size of the portion of the main memory 10 which is associated with a particular input/output controller 18 is determined by connections at the controller l8 and as memory requirements of the particular devices associated with input/output controller 18 change the size of the memory portion available to each controller may be suitably adjusted.

Each partition must begin at a storage location that is a multiple of 1.000.

As shown in FIG. 4, the live digit number appearing immediately to the left of the lower left-hand corner of the individual partition walls (imaginary) is the address of the first storage location associated with that partition. Thus, partition No. begins at storage location 05000, while partition No. 1 begins at storage location 12000, etc.

INDEX STORAGE REGISTERS Within each partition, there are three groups of four storage locations each that may be utilized by what is generally known in the art as index registers. The first index register of each partition comprises storage locations 11, 12, 13, and 14, relative to the beginning storage location. Thus, as shown in FIG. 4, the first index register associated with partition No. 0 comprises storage location 5011, 5012, 5013, and 5014, while the first index register associated with partition No. 1 comprises storage locations 12011, 12012, 12013, and [2014. Likewise, the second index register of each partition comprises locations 21, 22, 23, and 24 relative to the beginning storage location of the partition, while the third index register of each partition comprises storage locations 31, 32, 33, and 34 relative to the beginning storage location of the partition.

There is no restriction on the use of the storage locations described above exclusively as index registers. In other words, the index register storage locations may be used to store ordinary data or program data as desired.

However, data stored in the index registers provide for up to four decimal digits per index register that may be utilized by the supervisory control unit 12 (FIG. 1) to add to certain main memory location addresses being handled within the supervisory control unit, as will be explained more fully below.

PROGRAM INTERRUPTED STORAGE REGISTER Locations 41, 42, 43, and 44 relative to the beginning storage locations of each partition are a Program Interrupted Storage Register and must be reserved for receipt of a four digit program interrupted (Pl) number generated within the supervisory control unit upon the occurrence and detection of certain errors. The PI number will be a number I l greater than the main memory address of the location that contained the last program instruction attempted to be executed by the system prior to tection of an error (i.e., the address of the instruction that resulted in an error when execution of that instruction was attempted) except for Input/Output (l/O) instructions.

In the case of attempted execution of an Input/Output instruction resulting in detection of an error, the Pl number inserted into the Program Interrupt Storage locations (relative locations 41-44) will be a number I greater than the address of the instruction that resulted in an error detection.

. The various errors that can be detected are classified into three groups as set forth below.

Addressing Errors a. Access requested to a storage location having an address greater than the upper limit address (last address) of the partition associated with the user (input/output device) whose program is being executed.

b. Access requested into a Common Area (described in more detail below) storage location of main memory having an address greater than the upper limit address (last address) of the Common Area.

c. Access requested into the Privileged Area of the Common Area (described in more detail below) by a user not privileged to access the Privileged Area.

Invalid Operation Code An instruction retrieved from a memory location that contains an invalid operation code 2, 3, or 10.

Data Fault a. Lack of a binary 1" in the b5 position of an instruction character retrieved from main memory during the BEGIN operation (retrieval of a new instruction character) of the supervisory control unit.

c. Decimal value of the bl, b2, b3, and b4 positions of an instruction character retrieved from main memory during BEGIN operation of the supervisory control unit exceeds 9".

d. Decimal value of the b1, b2, b3, and b4 positions of any character retrieved from an Index Register during an INDEX operation of the supervisory control exceeds "9 e. Decimal value of the b1, b2, b3, and b4 positions of any character read from main memory as a disc storage device address exceeds 9".

Common Area The address locations of the main memory, FIG. 4, prior to partition No. 0 is termed the Common Area. The Common Area may contain up to 10,000 character storage locations, in increments of 1,000. As shown in FIG. 4, one embodiment of the present invention has a Common Area containing 5,000 storage locations.

The Common Area is shared by all users of all the peripheral device user groups; this common sharing is controlled by various logic control elements described in more detail below.

Protected Area The first 300 character storage locations of the Common Area are termed the Protected Area. Data may be read from the Protected Area by the programs for all peripheral device users; data may not be written into the Protected Area during normal usage of the system by a peripheral group user except by normal program execution. Data is preloaded into the Protected Area only during special set up procedures during serving or test procedures only and as part of the normal operating sequence of the supervisory control units logic elements.

P-Addresses Register The first storage locations of the Protected Area (locations 0-99) is termed P-address register and is subdivided in 20 P-words of live character locations each. Each P-word is associated with an individual peripheral device user group or partition as shown in FIG. 4. The content of each P-word is now described with reference to FIG. 5. In FIG. 5, the format for the P-word No. 11, associated with peripheral device user group and main memory parition No. 11 is shown as occupying Protected Area P-address register character storage locations 55-59. The first four characters (Hi-P3) of the P-word are used principally for specifying the address or storage location in main memory of an instruction associated with the P-word partition number or Common Area. Only the first four bits (b0, bl, b2, and b3) of the first four instruction address characters (P-P3) are used to define the location of the instruction. A decimal value of one" in the first instruction character (P0) indicates that the supervisory control unit is not currently servicing the partition and peripheral user group associated with the P-word. When the PO character of a P-word is decimal one, the instruction address defined by characters P0-P3 is the address or location of the next instruction to be accessed by the supervisory control unit when it resumes servicing the Common Area partition or peripheral user group associated with the P-word number.

When the least significant character (P0) of a P- word is decimal zero," the instruction address defined by characters P0-P3 is indicative of the fact that the peripheral user group and associated main memory partition associated with the P-word number are currently being serviced. In this case, the contents of the P- word for the partition being serviced do not indicate or reflect the current status of the partition being serviced.

The sixth order (b7) of the first character (P0) of the P-word is set to a binary l" to indicate that the instruction address defined by the first four characters of the P-word is in the Common Area, and is set to a binary 0 to indicate that the instruction address is in the main memory partition associated with the P-word number.

The sixth bit (b7) of the next to least significant character (Pl) of the P-word is utilized for storage of the status (binary l or 0) of a zero condition flip-flop in the supervisory control unit, which will be described in more detail below.

The sixth bit (b7) of the third character (P2) of the P-word is utilized for storage of the status (binary l or 0) of a minus condition flip-flop (to be described below) in the supervisory control unit.

The sixth bit (b7) of the fourth character (P3) of the P-word is utilized for storage of the status (binary l or 0) of a carry flip-flop in the supervisory control unit.

Storage of the status of the zero, minus, and carry condition flip-flops is necessary in order to provide resumption upon an occurrence of a conditional branch instruction in the subsequent continued execution of a program associated with the particular partition/P- word number.

The first four bits or orders (PO-P3) of the fifth character (P4) is a binary code indicative of the size of the main memory partition associated with the particular P-word number.

The storage of the status of the condition flip-flops in a P-word is of no significance when the supervisory control unit is operating, i.e., engaged in an input/output transfer of data as described below.

B-Addresses Register As shown in FIG. 4, the next or second one hundred storage locations of the Protected Area of the Common Area of the Main Memory 10 is a field entitled B-Addresses Register. The B-Addresses Register is a field comprised of 20 five-character locations for receiving a B-Word. Each B-Word location is associated with a correspondingly numbered main memory partition and peripheral user group.

In FIG. 6, there is shown by way of example a B- Word format contained in B-Word location No. 11 which is comprised of the five contiguous character lo cations 155-159 (84-80). B-Word No. 11 is associated with a peripheral user group and main memory partition No. 11.

The least significant four characters (BO-B3) of a B- Word specify the number or quantity of characters less one remaining to be transferred between the associated numbered input/output controller and the supervisory control unit.

The first four bits (bl-b4) of each of the first four characters B0-B3) of the B-Word are used as BCD codes for defining the quantity (less one) to be transferred, as illustrated in FIG. 6. The fifth bit (b5) of all of the characters (Bo-B4) of the B-Words are of no significance and are always a binary The sixth bit (b7) of all of the characters (BO-B4) of a B-Word are of no significance and are always a binary "0.

The first four bit positions of the most significant character (B4) of a B-Word are used for storing various portions of an instruction and for control purposes. Position bl of character B4 receives a bit (F0) from the function code of an accessed instruction; the bit is binary l if the instruction is a write instruction and a binary 0 if the instruction is a read" instruction. (Instruction format and instruction description is discussed below).

Position b2 of character B4 receives a bit (LBZ) from the length of B-fieid portion of an instruction; if the bit is a binary 1", it is indicative that writing (transmission) of data from the supervisory control unit takes place in the "Normal mode; i.e., the six bit internal code is converted to a seven bit USACII code as described previously. If the bit is a binary 0", it is indicative that writing (transmission) of data from the supervisory control unit is to take place in modified or control" form so as to complement the internal sixth bit (b7) to fill the USACII sixth bit (b6) and force the USACII seventh bit (b7) to binary zero.

Position b3 of character B4 receives a bit LB3 from the accessed instruction which bit is a binary l when the reading of data from an input/output controller is to take place in modified form, i.e., no previous data in a field is to be cleared to zero when no new data is available to read into various portions of the field. The bit is binary 0 when reading into a field is to take place in normal or unmodified form, i.e., lack of new data characters to fill up a field results in clearing of the remainder of the field.

Position b4 of character B4 receives a binary l bit when associated input/output controller is active. A-Addresses Register The third field of character locations (locations 200-299) of the Protected Area of the Common Area of the Main Memory is designated A-Addresses Register. The A-Addresses Register comprises 25 character A-Words each associated with a correspondingly numbered user group and partition as 

1. In a multiprogramming data processing system wherein a plurality of addressable input/output devices originate and receive data asynchronously with respect to each other and are segregable into separate groups, the combination which comprises: an input/ouput controlling device connected to at least one such input/output device for controlling the transmission of data to or receipt of data from such a device, said controlling device further including means to generate an interrupt signal in response to an associated input/output device desiring to transmit or to receive data; a main memory unit coupled to each input/output controlling device and partitioned into a plurality of sequentially ordered sections which receive data and instruction words in the form of a program in each section, the number of sections being at least as great as the number of input/output controlling devices and with each section of the memory being associated with and accessible to only one particular controlling device; control means coupled to the input/output controlling devices and to the main memory unit and responsive to the program contained in each section of the memory to execute the program instructions for a predetermined time period, said control means including means responsive to the end of said time period and to the completion of a successful branch instruction of that program to suspend execution of that program and to similarly commence execution of the program instructions contained in the next sequentially ordered section of memory with the execution of the programs in all sections of the memory continuing in a sequential round robbin manner; and means responsive to an interrupt signal received from an input/output controlling device to suspend execution of a program in a section of the main memory unit and to direct performance of the input/output command from the controlling device and any other input/output commands from any other controlling devices, said means further including means responsive to the completion of performance of said input/ouput commands to direct execution of the program contained in the next sequential section of the main memory unit.
 2. The system described in claim 1 wherein: the partitioning of the main memory unit into sections is provided by adjustable connections on each input/output controlling device which determine the portion of the main memory unit that is accessible by that particular controlling device.
 3. The system described in claim 2 further including: additional memory modules which are similar to the original main memory unit, to be similarly coupled to the control means and to the input/output controlling devices, whereby the storage capacity of the original main memory is expanded.
 4. The system described in claim 1 wherein: the main memory unit contains a section in addition to those sections associated with individual controlling devices, which additional section contains a portion in which data and program instructions may be retrievably inserted from other sections and also contains a privileged section from which other sections can read data or program instructions but into which the sections cannot insert data or program instructions.
 5. The system described in claim 3 wherein: a secondary mass memory storage bank is coupled to the main memory unit and is adapted to provide additional data storage for the main memory unit and to the input-output controlling devices.
 6. The system described in claim 5 wherein: the secondary mass memory bank is coupled to the main memory unit and to the supervisory control unit by means which restrict the access to the memory bank to certain predetermined input/output controlling devices.
 7. The system described in claim 1 wherein each input/output controlling device has an input/output device coupled to it by a two wire data bus over which the data transmission is bit-serial character-serial.
 8. A multiprogramming data processing system which comprises: a plurality of addressable input/output devices, each of which is utilized to originate and receive data asynchronously with respect to each other and to transmit an interrupt signal when it requests to receive data or to transmit data and program instructions, said devices to be interconnected in predetermined groups; a plurality of controlling devices, each of which is coupled to at least one input/output device; a main memory coupled to the controlling devices for receiving and storing data and program instructions therefrom, said memory being sectioned into individual sequential portions, the number of which is at least equal to the number of controlling devices, each individual memory portion being associated with and accessible to only one controlling device; control means coupled to the main memory and to each controlling device, the control means executing the program instructions of a program stored in an individual portion of the main memory for a predetermined time, said control means responsive to the end of the predetermined time and to the occurreNce of a successful branch instruction to suspend execution of that particular program at that point and to switch to execution of the program instructions in the next sequential portion of the main memory for a similar execution of the program contained in that portion of the memory, the sequential switching of the execution of programs in individual portions of the memory continuing on a sequential and round robbin basis for all portions of the memory; and means responsive to an interrupt signal received from an input/output device via an individual controlling device to suspend the execution of a program instruction in an individual portion of the memory and to perform an input/output command for that controlling device, said means responsive to the completion of an input/output operation for that particular controlling device to check in sequence every other controlling device and to perform an input/output operation for each succeeding controlling device which has an outstanding input/output command, said means further including means responsive to the completion of performance of all input/output operations for the controlling devices to direct said control means to commence the performance of program instructions contained in the memory portion next in sequential order to the memory portion which had had its program instructions being executed at the time of response to the interrupt signal.
 9. The system described in claim 8 wherein: the partitioning of the main memory unit into sections is provided by adjustable connections on each input/output controlling device which determine the portion of the main memory unit that is accessible by that particular device.
 10. The system described in claim 9 further including: additional memory modules which are similar to the original main memory unit, to be similarly coupled to the control means and to the input/output controlling devices, whereby the storage capacity of the original main memory is expanded.
 11. The system described in claim 8 wherein: the main memory unit contains a section in addition to those sections associated with individual controlling devices, which additional section contains a portion in which data and program instructions may be retrievably inserted from other sections and accessible thereto for reading only if so desired and also contains a privileged section from which other sections can read data or program instructions but into which the sections cannot insert data or program instructions.
 12. The system described in claim 10 wherein: a secondary mass memory storage bank is coupled to the main memory unit for providing additional data storage for the main memory unit and to the input/output controlling devices.
 13. The system described in claim 12 wherein: the secondary mass memory bank is coupled to the main memory unit and to the supervisory control unit by means which restrict the access to the memory bank to certain predetermined input/output controlling devices.
 14. The system described in claim 8 wherein: each input/output controlling unit has an input/output device coupled to it by a two wire data bus over which the data transmission is bit-serial character-serial. 